클러스터 아키텍처와 컴포넌트
쿠버네티스 클러스터는 컨트롤 플레인(Control Plane)과 워커 노드(Worker Nodes)로 구성된 분산 시스템입니다.
컨트롤 플레인 컴포넌트
- kube-apiserver: 모든 API 요청을 처리하는 중앙 통제 지점
- etcd: 클러스터의 모든 상태와 구성 정보를 저장하는 분산 키-값 저장소
- kube-scheduler: 새로운 Pod를 실행할 노드를 선택하는 역할
- kube-controller-manager: 다양한 컨트롤러를 실행하여 클러스터 상태를 관리
- Node Controller, Replication Controller, Endpoints Controller, Service Account & Token Controller 등
- cloud-controller-manager: 클라우드 제공업체별 컨트롤 로직을 실행
노드 컴포넌트
- kubelet: 각 노드에서 실행되며 Pod와 컨테이너 실행을 관리
- kube-proxy: 네트워크 규칙을 관리하고 Pod 간 통신을 가능하게 함
- 컨테이너 런타임: 컨테이너를 실행하는 소프트웨어(Docker, containerd, CRI-O 등)
클라우드 네트워크 개념과 비교
- 클라우드 리전과 가용 영역: 쿠버네티스 노드는 여러 가용 영역에 분산 배치하여 고가용성을 확보할 수 있습니다.
- 컨트롤 플레인과 데이터 플레인: 클라우드 아키텍처처럼 쿠버네티스도 관리 기능(컨트롤 플레인)과 워크로드 실행(데이터 플레인)을 분리합니다.
실습 예시
클러스터 구성요소 상태 확인
# 컨트롤 플레인 컴포넌트 상태 확인
kubectl get componentstatuses
# 노드 상태 확인
kubectl get nodes
kubectl describe node <node-name>
시스템 Pod 확인
# kube-system 네임스페이스의 Pod 조회
kubectl get pods -n kube-system
중요 로그 확인
# API 서버 로그 확인 (컨트롤 플레인 노드에서)
kubectl logs kube-apiserver-master -n kube-system
# kubelet 로그 확인 (노드에서 직접)
journalctl -u kubelet
고가용성 구성
- 다중 컨트롤 플레인 노드 구성
- etcd 클러스터 분산 배치
- 로드 밸런서를 통한 API 서버 접근성 확보